package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import com.enjoyor.soa.traffic.api.dto.bigdata.FakeVehicleManageDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import java.util.Date;

/**
 * 套牌车分析服务
 */
public interface DubboAnalyzeFakeService {

	/**
	 * 对套牌车进行分析并获取分页结果
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param startTime 分析开始日期
	 * @param endTime 分析截止日期
	 * @param page 分页
	 * @return Page &lt; FakeVehicleDto &gt; ：包含套牌车信息的分页集合
	 */
	public ResultPojo analyzeFakeVehicle(String token, String licenseType, String licenseNum, Date startTime, Date endTime, Page page);


	/**
	 * 写入一条套牌车辆管理信息
	 *
	 * @param fakeVehicleManage  套牌车辆管理信息
	 * @return ResultPojo 操作结果
	 */
	public ResultPojo setFakeVehicleManage(String token, FakeVehicleManageDto fakeVehicleManage);

	/**
	 * 套牌车误报
	 *
	 * @param fakeVehileId  套牌嫌疑车ID
	 * @return ResultPojo 操作结果
	 */
	public ResultPojo notFakeVehicle(String token, String fakeVehicleId);


	/**
	 * 查询套牌车管理信息并获取结果
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param startTime 套牌确认起始时间
	 * @param endTime 套牌确认截止时间
	 * @param page 分页
	 * @return Page &lt; FakeVehicleManage &gt; 包含套牌车管理信息的分页集合
	 */
	public ResultPojo getFakeVehicleManage(String token, String licenseType, String licenseNum, Date startTime, Date endTime, Page page);

	/**
	 * 导出套牌嫌疑车信息
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param startTime 分析开始日期
	 * @param endTime 分析截止日期
	 * @param startIndex 导出起始数据，默认 1
	 * @param endIndex 导出起始数据，默认 5000
	 * @return List &lt; FakeVehicleDto &gt; 包含套牌车信息的集合
	 */
	public ResultPojo expFakeVehicle(String token, String licenseType, String licenseNum, Date startTime, Date endTime);
	public ResultPojo expFakeVehicle(String token, String licenseType, String licenseNum, Date startTime, Date endTime,int startIndex,int endIndex);

	/**
	 * 套牌嫌疑车信息 总记录数
	 *
	 * @param token
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param startTime 分析开始日期
	 * @param endTime 分析截止日期
	 * @return 总记录数
	 */
	public ResultPojo countFakeVehicle(String token, String licenseType, String licenseNum, Date startTime, Date endTime);

	/**
	 * 导出套牌车管理信息
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param startTime startTime：套牌确认起始时间
	 * @param endTime：套牌确认截止时间
	 * @param startIndex 导出起始数据，默认 1
	 * @param endIndex 导出起始数据，默认 5000
	 * @return List &lt; FakeVehicleManageDto &gt; 包含套牌车管理信息的集合
	 */
	public ResultPojo expFakeVehicleManage(String token, String licenseType, String licenseNum, Date startTime, Date endTime);
	public ResultPojo expFakeVehicleManage(String token, String licenseType, String licenseNum, Date startTime, Date endTime,int startIndex,int endIndex);

	/**
	 * 套牌车管理信息 总记录数
	 *
	 * @param token
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param startTime 分析开始日期
	 * @param endTime 分析截止日期
	 * @return 总记录数
	 */
	public ResultPojo countFakeVehicleManage(String token, String licenseType, String licenseNum, Date startTime, Date endTime);
	/**
	 * @param licenseType 号牌类型
	 * @param licenseNum  号牌号码
	 * @param beginTime   开始时间
	 * @param endTime     结束时间
	 * @param page
	 * @return
	 */
	public ResultPojo getPageFakeInfo(String token,String licenseType, String licenseNum, String beginTime, String endTime, Page page);
	/**
	 * 套牌车导出
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum  号牌号码
	 * @param beginTime   开始时间
	 * @param endTime     结束时间
	 * @param startRow    开始行行数,行数起始值是0
	 * @param expRows     导出行数
	 * @return
	 */
	public ResultPojo expPageFakeInfo(String token,String licenseType, String licenseNum, String beginTime, String endTime, int startRow, int expRows);
}
